//
//  NSString+Time.m
//  MZBiz
//
//  Created by Jie Chen on 2021/11/15.
//

#import "NSString+Time.h"

@implementation NSString (Time)
/// 获取当前时间 年-月
+(NSString*)getTheCurrentYearAndMonth{
        //获取本地时间

        NSDate *date = [NSDate date];                            //实际上获得的是：UTC时间，协调世界时，亚州的时间与UTC的时差均为+8

        NSTimeZone *zone = [NSTimeZone systemTimeZone];                  //zone为当前时区信息  在我的程序中打印的是@"Asia/Shanghai"

        NSInteger interval = [zone secondsFromGMTForDate: date];      //28800 //所在地区时间与协调世界时差距

        NSDate *localeDate = [date dateByAddingTimeInterval: interval];  //加上时差，得到本地时间

        //get seconds since 1970

        NSTimeInterval intervalWith1970 = [localeDate timeIntervalSince1970];     //本地时间与1970年的时间差（秒数）

        int daySeconds = 24 * 60 * 60;                                            //每天秒数

        NSInteger allDays = intervalWith1970 / daySeconds;                        //这一步是为了舍去后面的时分秒

        localeDate = [NSDate dateWithTimeIntervalSince1970:allDays * daySeconds];

        NSDateFormatter *fmt = [[NSDateFormatter alloc] init];

        fmt.dateFormat = @"yyyy-MM";   //创建日期格式（年-月）

        NSString *temp = [fmt stringFromDate:localeDate];
    
    return temp;
}

/// 获取当前时间 年-月-日
+(NSString*)getTheCurrentYMD{
        //获取本地时间

        NSDate *date = [NSDate date];                            //实际上获得的是：UTC时间，协调世界时，亚州的时间与UTC的时差均为+8

        NSTimeZone *zone = [NSTimeZone systemTimeZone];                  //zone为当前时区信息  在我的程序中打印的是@"Asia/Shanghai"

        NSInteger interval = [zone secondsFromGMTForDate: date];      //28800 //所在地区时间与协调世界时差距

        NSDate *localeDate = [date dateByAddingTimeInterval: interval];  //加上时差，得到本地时间

        //get seconds since 1970

        NSTimeInterval intervalWith1970 = [localeDate timeIntervalSince1970];     //本地时间与1970年的时间差（秒数）

        int daySeconds = 24 * 60 * 60;                                            //每天秒数

        NSInteger allDays = intervalWith1970 / daySeconds;                        //这一步是为了舍去后面的时分秒

        localeDate = [NSDate dateWithTimeIntervalSince1970:allDays * daySeconds];

        NSDateFormatter *fmt = [[NSDateFormatter alloc] init];

        fmt.dateFormat = @"yyyy-MM-dd";   //创建日期格式（年-月-日）

        NSString *temp = [fmt stringFromDate:localeDate];
    
    return temp;
}

/// 获取当前时间 前一天年-月-日
+(NSString*)getTheYestodayTime{
        //获取本地时间

        NSDate *date = [NSDate date];                            //实际上获得的是：UTC时间，协调世界时，亚州的时间与UTC的时差均为+8

        NSTimeZone *zone = [NSTimeZone systemTimeZone];                  //zone为当前时区信息  在我的程序中打印的是@"Asia/Shanghai"

        NSInteger interval = [zone secondsFromGMTForDate: date];      //28800 //所在地区时间与协调世界时差距

        NSDate *localeDate = [date dateByAddingTimeInterval: interval];  //加上时差，得到本地时间

        //get seconds since 1970

        NSTimeInterval intervalWith1970 = [localeDate timeIntervalSince1970];     //本地时间与1970年的时间差（秒数）

        int daySeconds = 24 * 60 * 60;                                            //每天秒数

        NSInteger allDays = intervalWith1970 / daySeconds;                        //这一步是为了舍去后面的时分秒

        localeDate = [NSDate dateWithTimeIntervalSince1970:(allDays-1) * daySeconds];

        NSDateFormatter *fmt = [[NSDateFormatter alloc] init];

        fmt.dateFormat = @"yyyy-MM-dd";   //创建日期格式（年-月-日）

        NSString *temp = [fmt stringFromDate:localeDate];
    
    return temp;
}
/// 获取当前时间 前index 天的年-月-日
+(NSString*)SQ_getTheNumberDayTime:(int)index
{
    //获取本地时间

    NSDate *date = [NSDate date];                            //实际上获得的是：UTC时间，协调世界时，亚州的时间与UTC的时差均为+8

    NSTimeZone *zone = [NSTimeZone systemTimeZone];                  //zone为当前时区信息  在我的程序中打印的是@"Asia/Shanghai"

    NSInteger interval = [zone secondsFromGMTForDate: date];      //28800 //所在地区时间与协调世界时差距

    NSDate *localeDate = [date dateByAddingTimeInterval: interval];  //加上时差，得到本地时间

    //get seconds since 1970

    NSTimeInterval intervalWith1970 = [localeDate timeIntervalSince1970];     //本地时间与1970年的时间差（秒数）

    int daySeconds = 24 * 60 * 60 ;                                            //每天秒数

    NSInteger allDays = intervalWith1970 / daySeconds;                        //这一步是为了舍去后面的时分秒

    localeDate = [NSDate dateWithTimeIntervalSince1970:(allDays-index) * daySeconds];

    NSDateFormatter *fmt = [[NSDateFormatter alloc] init];

    fmt.dateFormat = @"yyyy-MM-dd";   //创建日期格式（年-月-日）

    NSString *temp = [fmt stringFromDate:localeDate];

return temp;
}
/// 获取当前时间 年-月-日-时-分-秒
+(NSString*)SQ_getTheCurrentTimedetail
{
    NSDate *date = [NSDate date];                            //实际上获得的是：UTC时间，协调世界时，亚州的时间与UTC的时差均为+8

    NSTimeZone *zone = [NSTimeZone systemTimeZone];                  //zone为当前时区信息  在我的程序中打印的是@"Asia/Shanghai"

    NSInteger interval = [zone secondsFromGMTForDate: date];      //28800 //所在地区时间与协调世界时差距

    NSDate *localeDate = [date dateByAddingTimeInterval: interval];  //加上时差，得到本地时间

    //get seconds since 1970

    NSTimeInterval intervalWith1970 = [localeDate timeIntervalSince1970];     //本地时间与1970年的时间差（秒数）

    int daySeconds = 24 * 60 * 60;                                            //每天秒数

    NSInteger allDays = intervalWith1970 / daySeconds;                        //这一步是为了舍去后面的时分秒

    localeDate = [NSDate dateWithTimeIntervalSince1970:allDays * daySeconds];

    NSDateFormatter *fmt = [[NSDateFormatter alloc] init];

    fmt.dateFormat = @"yyyy-MM-dd HH:mm:ss";   //创建日期格式（年-月-日 时分秒）

    NSString *temp = [fmt stringFromDate:localeDate];

return temp;
}



/// 通过2个时间获取天使
/// @param startTime 开始时间
/// @param endTime 结束时间
+(int)getTheDayCoutWithStartTime:(NSString*)startTime andEndTime:(NSString*)endTime{
    
  
    
    
    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
    //需要设置为和字符串相同的格式
    [dateFormatter setDateFormat:@"yyyy-MM-dd"];
    NSDate *startDate = [dateFormatter dateFromString:startTime];
    NSDate *endTiDate = [dateFormatter dateFromString:endTime];
    
   
    NSTimeInterval sTime = [startDate timeIntervalSince1970];//date是要转化为秒数的那个日期
    NSTimeInterval eTime = [endTiDate timeIntervalSince1970];//date是要转化为秒数的那个日期

    double time = eTime -sTime;
    
    int day = time/24/3600 +1;
    
    return day;

}

+ (NSString *_Nullable)SQ_currentTime {
   
     NSDateFormatter *formatter = [[NSDateFormatter alloc] init] ;
     [formatter setDateStyle:NSDateFormatterMediumStyle];
     [formatter setTimeStyle:NSDateFormatterShortStyle];
     [formatter setDateFormat:@"YYYY-MM-dd HH:mm:ss"]; // ----------设置你想要的格式,hh与HH的区别:分别表示12小时制,24小时制
     //设置时区,这个对于时间的处理有时很重要
     NSTimeZone* timeZone = [NSTimeZone timeZoneWithName:@"Asia/Shanghai"];
     [formatter setTimeZone:timeZone];
     NSDate *datenow = [NSDate date];//现在时间,你可以输出来看下是什么格式
     NSString *timeSp = [NSString stringWithFormat:@"%ld", (long)[datenow timeIntervalSince1970]];
     return timeSp;
}

/// 根据类型时间戳转字符串
/// @param time 时间戳
/// @param format 类型
+(NSString*)SQ_time:(NSString*)time Formatter:(NSString*)format
{
    if (!format) {
        format = @"YYYY-MM-dd HH:mm:ss";
    }
    NSDateFormatter * formatter = [[NSDateFormatter alloc]init];
    [formatter setDateFormat:format];

    float times = [time floatValue];
    if (time.length>11) {
        times = times/1000;
    }
    NSDate * date = [NSDate dateWithTimeIntervalSince1970:times];
    return [formatter stringFromDate:date];
    
}

 
@end
